package com.qcby.service;

import com.qcby.entity.*;
import com.qcby.entity.Checkings;
import com.qcby.entity.Result;
import com.qcby.entity.Review;
import com.qcby.entity.UserCheckin;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CheckingsService {
    //通过用户名获取用户id
    Result<Integer> getUserIdByName(String userName);

    //通过用户Id获取用户星系信息
    Result<User> findUserInfoByUserId(int userId);

    //通过用户id获取用户打卡记录信息
    Result<List<UserCheckin>> getCheckinsByUserId(@Param("Uid") Integer Uid, @Param("shopId") Integer shopId);

    //通过打卡记录id获取打卡记录下的评论
    Result<List<Review>> getCommentsByCheckinId(int checkinId);

    //通过父评论id获取子评论
    Result<List<Review>> getChildrenCommentsByParentId(int parentId);

    //在打卡下添加评论
    Result<Integer> addComment(int checkinId, int userId, String content);

    //对评论进行回复
    Result<Integer> replyComment(int checkinId, int userId, String content, int parentId);

    Result<Integer> addCheckin(Checkings checkings);

    //对打卡记录点赞
    Result<Integer> likeCheckin(int checkinId, int userId);

    //撤销对打卡的点赞
    Result<Integer> cancelCheckinLike(int checkinId, int userId);

    //对打卡记录下的评论点赞
    Result<Integer> likeComment(int commentId, int userId);

    //撤销对评论的点赞
    Result<Integer> cancelCommentLike(int commentId, int userId);

    //查找用户点赞过了的打卡记录
    Result<List<Integer>> getUserLikedCheckins(int userId);

    //查找用户点赞过了的打卡评论
    Result<List<Integer>>getUserLikedComments(int userId, int checkinId);

    //更新分享状态
    Result<Integer> updateShareStatus(int checkinId, int isShared, int userId);
}
